package com.cjx.stars.service;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cjx.stars.common.Response;
import com.cjx.stars.pojo.request.ChatRequest;
import com.cjx.stars.pojo.table.Chat;
import com.cjx.stars.pojo.vo.ChatMessageVO;

import java.util.List;

/**
* @author cjx
* @description 针对表【chat(聊天消息表)】的数据库操作Service
* @createDate 2024-04-13 19:32:14
*/
public interface ChatService extends IService<Chat> {
    /**
     * 封装聊天结果
     *
     * @param userId     用户id
     * @param toId       目标用户id
     * @param text       文本
     * @param chatType   聊天类型
     * @param createTime 创建时间
     * @return 聊天信息封装类
     */
    ChatMessageVO chatResult(Long userId, Long toId, String text, Integer chatType, DateTime createTime);


    /**
     * 删除缓存中的聊天数据
     * @param cacheChatPrivate
     * @param s
     */
    void deleteKey(String cacheChatPrivate, String s);

    /**
     * 私聊功能
     * @param chatRequest 聊天参数
     * @param privateChat 聊天性质
     * @return 聊天记录
     */
    Response<?> getPrivateChat(ChatRequest chatRequest, int privateChat);

    /**
     * 获取缓存信息
     * @param redisKey 缓存key
     * @param id id
     * @return 缓存信息
     */
    List<ChatMessageVO> getCache(String redisKey, String id);

    /**
     * 保存缓存信息
     * @param redisKey 缓存key
     * @param id id
     * @param chatMessageVOS 聊天记录
     */
    void saveCache(String redisKey, String id, List<ChatMessageVO> chatMessageVOS);

    /**
     * 队伍聊天功能
     * @param chatRequest 请求参数
     * @param teamChat 聊天性质
     * @return 聊天记录
     */
    Response<?> getTeamChat(ChatRequest chatRequest, int teamChat);

    /**
     * 获取大厅聊天信息
     * @param hallChat 聊天性质
     * @return 聊天记录
     */
    Response<?> getHallChat(int hallChat);
}
